#!/bin/bash
#变量的等号左右不能有空格，否则会被识别成命令
#$1代表读取用户在命令行输入的第一个参数作为变量值
secure_client=$1
echo $secure_client
#并且echo '123' |sudo -S使用这一类特殊的命令，实现了自动输入用户密码
#123就是系统当前的root密码，即使泄漏出去问题也不是很大
#刚开始两行-F把之前积累的一些多余的配置清空掉
echo '123' |sudo -S iptables -F INPUT
sudo iptables -F FORWARD
sudo iptables -F OUTPUT
#刚开始两行-F把之前积累的一些多余的配置清空掉
#在后续先设置默认情况，除白名单以外的ip，进来的连接全部被丢弃
sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
#回环也很容易忘记，如果忘记opc就无法读取iec104，和modbus tcp的底层驱动了
sudo iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#在开发的时候很容易漏敲这一条指令，这样，即使有FORWARD的配置，缺少input一样是不行的
sudo iptables -I INPUT -p tcp -s $secure_client -j ACCEPT
sudo iptables -I FORWARD -p tcp -s $secure_client -d 127.0.0.1 -j ACCEPT
sudo iptables -I FORWARD -p tcp -s 127.0.0.1 -d $secure_client -j ACCEPT
#允许网关对平台发出ping请求，方便网络调试
#sudo iptables -I INPUT -p icmp --icmp 8 -j ACCEPT  #允许请求进来
#sudo iptables -I OUTPUT  -p icmp --icmp 0 -j ACCEPT  #允许响应出去
sudo iptables -I OUTPUT  -p icmp --icmp 8 -j ACCEPT  #允许网关发起ping请求
sudo iptables -I INPUT -p icmp --icmp 0 -j ACCEPT  #允许受到平台ping的回复
#这句话配合iptables-persistent套间，保证操作系统重启以后，防火墙的配置能够继续
sudo iptables-save > /etc/iptables/rules.v4
#网关并不需要重启，直接去修改配置就好
#iptables-save > /etc/iptables/rules.v4这个操作里面涉及到两个权限
#一个是iptables-save的执行权限，还有/etc/iptables/rules.v4文件的改写权限,需要通过chmod 777改变

#iptable在底层运行，只要配置正确，无需重启网关或者操作系统就能让防火墙的配置生效。
#sudo iptables -I INPUT -p tcp -s 192.168.61.137 -j ACCEPT
#sudo iptables -I FORWARD -p tcp -s 192.168.61.137 -d 127.0.0.1 -j ACCEPT
#sudo iptables -I FORWARD -p tcp -s 127.0.0.1 -d 192.168.61.137 -j ACCEPT

